Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування базових алгоритмів»
Варіант № 4
Завдання на розрахунково-графічну роботу (РГР)
1.Розробити алгоритми і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в додатках 1, 2 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмний проект в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).3.Оформити РГР та вчасно надіслати викладачу на перевірку файл РГР та файл програми.
Завдання 1 за варіантом:
/
Завдання 2 за варіантом:
/
Короткий опис рішення завдання:
Завдання 1: В методы main переписуємо всі числа із поданої СЛАР в масив, а далі робимо розподіл етапів на методи, як зазначено в завданні (task11 для перетворення матриці до трикутникового вигляду, task12 для отримання значень невідомих змінних СЛАР, task13 для виведення виводу результатів розрахунку завдання 1). У task11 матриця зводиться до трикутного виду (віднімаємо від нижніх рядків верхні, роблячи нулі). У task12 знаходимо невідомі змінні СЛАР, рухаючись знизу вгору, щоб невідомі знаходилися одна за одною. У task13 початковий і зведений до трикутного вигляду масиви, виводяться у вигляді матриці, а невідомі змінні під відповідним рядком (вектор відповіді).
Завдання 2: Вводимо у main сканер, який буде зчитувати задані користувачем числа. Далі завдяки циклу повертаємо кількість парних цифр числа.
Блок-схема алгоритму для другого завдання:
/
Програма проекту (копія коду на білому фоні):
package tr15.smirnov;
import java.util.Scanner;
public class RgrTr15Smir {
public static void main (String[] args) {
Scanner s = new Scanner(System.in);
int[] t3 = new int[3];
double[][] matrix = {{5, 0, -1, 5, -2, -56.1},
{-1, 5, 6, 1, 1, -51.1},
{2, 4, 3, 5, 0, -81.3},
{3, 3, 2, 3, 2, -77.2},
{0, 0, 2, -1, 6, -31.3}};
double[][] triangle = task11(matrix);
double[][] vector = task12(triangle);
System.out.print("Початкова матриця:\n");
task13(matrix);
System.out.print("Трикутникова матриця:\n");
task13(triangle);
System.out.print("Вектор результатів:\n");
task13(vector);
for (int i = 0; i < t3.length; i++) {
System.out.printf("Варіант %d = ", i+1);
t3[i] = s.nextInt();
}
for (int i = 0; i < t3.length; i++) {
System.out.printf("У числі %d кількість парних цифр дорівнює %d.\n", t3[i], task2(t3[i]));
}
}
public static double[][] task11 (double[][] m) {
double[][] res = new double[m.length][m[0].length];
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[0].length; j++) {
res[i][j] = m[i][j];
}
}
double[] var;
double k;
int num = 1;
while (num < res.length) {
for (int i = num; i < res.length; i++) {
if (res[num-1][num-1] == 0) {
var = res[num-1];
res[num] = var;
res[num-1] = res[num];
i--;
} else if (res[i][num-1] != 0) {
k = res[num-1][num-1] / res[i][num-1];
for (int j = num-1; j < res[0].length; j++) {
res[i][j] = res[num-1][j] - k * res[i][j];
}
}
}
num++;
}
return res;
}
public static double[][] task12 (double[][] tM) {
double[][] r = new double[1][tM.length];
...